package com.li.onjava8.concurrent.es;

import com.li.onjava8.concurrent.es.task.CountingTask;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * @author li
 * @date 2023/10/30 14:37
 */
public class Futures {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService es = Executors.newSingleThreadExecutor();
        //execute: 在将来的某个时间执行给定的命令。
        // 命令可以在新线程中执行，也可以在线程池中执行，或者在调用线程中执行，这由Executor实现决定。
        // (无返回值)
        es.execute(() -> new CountingTask(88));;
        //submit: 提交可运行任务以供执行，并返回表示该任务的Future。
        Future<Integer> f = es.submit(new CountingTask(99));
        //当你的任务尚未完成的Future上调用get()时，调用会阻塞（等待）直到结果可用。
        System.out.println(f.get());
        es.shutdown();
    }
}
/**
 *
 *
 */